home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 August / Macworld (1997-08).dmg / Shareware World / Comms & Internet / SB112 / Plugin Docs / Scripts < prev   
Text File  |  1997-06-17  |  6KB  |  126 lines

  1. ShadowBotScripting Language, Version 1.1.2
  2. © John Bafford, 1996-1997
  3.  
  4. Scripting Documentation
  5.  
  6. All plugins go in the the Plugins folder, with the exception of channel JOIN/PART scripts, which go in the 'JOIN' and 'PART' folders in the Plugins folder. You may name files anything you want, as long as they don't start with a * (reserved for non-plugin files that go in the plugins folder).
  7.  
  8. ShadowBot accepts three types of commands in scripts: configuration commands, flow commands and bot commands. Flow commands are always preceded with an @ (i.e., "@LABEL thelabel"), bot commands are not preceded with anything (i.e., "SAY Hello!"). The third type of commands, configuration commands, are preceded with a *. When parsing plugin files, any line begining with a a ' (comment character) or a * (after the inital parsing for configuration commands) is ignored.
  9.  
  10. All of ShadowBot's commands may be used from plugins. When ShadowBot's command parser is called by a plugin, it executes commands with a security level of 1001 and a protection level of 5. (So scripts can do *anything*. It is YOUR responsibility to check for proper access.)
  11.  
  12. Flow Control Commands
  13. 
  14. @LABEL <theLabel>
  15.     Defines a label that is used with the IF and GOTO commands. Labels are case sensitive and have a maximum length of 31 characters. Labels MAY NOT start with the character '>'.
  16.  
  17. @ENTRY <commandName>
  18.     Defines a label which can be used to put multiple scripts into one file. For example, if you put two scripts in one file, commands "hello" and "goodbye," execution will start from the top unless you include the commands '@ENTRY hello' (for hello) and '@ENTRY goodbye' (for goodbye). These have a maximum length of thirty characters, so anything past this is not significant.
  19.  
  20. @GOTO <theLabel>
  21.     Moves script execution to the label specified. If you try and jump to a label that doesn't exist, an error will be displayed in the console and execution will stop.
  22.  
  23. @END
  24.     Stops script execution. If this is not the last line in your script, the last line will not be executed.
  25.  
  26. @@END
  27.     Makes ShadowBot stop parsing the file. Useful if you want to put comments at the end of a file. Also functions as an @END.
  28.  
  29. @IF <command> <modifier> <test> <goto> [<else goto>]
  30.     The most powerful of the flow control commands, IF allows you to do logic branching.
  31.  
  32.     Valid IF commands:
  33.         ACCESS      - integer - use for access level checking
  34.         NICKPRESENT - string  - use to check to see if someone is in the channel
  35.         NICKHASOPS  - string  - use to see if someone has ops
  36.         FOUNDUSER   - boolean - use to see if the user was found in the userlist
  37.         AUTOOP      - boolean - use to see if the user has autoops. (this also checks foundUser and
  38.                            returns false if founduser is false)
  39.  
  40.     You can also do string comparisons by enclosing a string in quotes, and number comparison by preceding the first number with a #.
  41.  
  42.     Valid data types:
  43.         integer - any real whole number
  44.         string  - any text, 255 or less characters (see note at bottom)
  45.         boolean - true or false, denoted by the text 'TRUE' and 'FALSE'. NOTE: anything other than 'TRUE'
  46.              is assumed to be 'FALSE'.
  47.  
  48.     Valid operators:
  49.         operator     meaning                use  with            note
  50.                 <             less than                             int, str              1
  51.                 >          greater than                 int, str              1
  52.                 =          equal to               int, str, bool        2
  53.     ==         exactely equal to      str                   3
  54.     <>         not equal to           int, str, bool
  55.     <=         less than/equal to     int, str              1
  56.     >=         greater than/equal to  int, str              1
  57.     =~         match with mask        str                   4
  58.  
  59. Notes:
  60.     1- for boolean comparison, always returns FALSE.
  61.  2- for string comparison, case is not sensitive.
  62.  3- for string comparison, case is sensitive.
  63.  4- for boolean and integer comparison, operates as =.
  64.  
  65.     Branching: the <goto> and <else goto> parameters
  66.         If the contition in the IF command is true, execution jumps to the label specified by the <goto> parameter. If <else goto> is specified, execution jumps there if the IF statement is false, otherwise it continues on the next line.
  67.  
  68.     You can use the variables in the Script Variables file in IF commands.
  69.  
  70.     Examples:
  71.     @IF NICKPRESENT = $ARG1 nickFound nickNotPresent
  72.         If the nick passed by the first parameter passed to the plugin is on the channel, execution jumps to nickFound, otherwise it goes to nickNotPresent.
  73.  
  74.     @IF ACCESS < 400 noAccess
  75.         If the access is less than 400, jump to label noAccess, else continue execution with the next command.
  76.  
  77.     @IF "string 1" = "string2" true false
  78.             If string one and string two are the same, (case not sensitive)...
  79.  
  80.     @IF #$RAND:int:1,100. > 50 true false
  81.             If some random integer is larger than 50...
  82.  
  83.     @IF "$USERHOST0" =~ "dshadow@*.umd.edu" true false
  84.             If the userhost of the person who activated this script matches the mask dshadow@*.umd.edu, then true...
  85.  
  86.  
  87. Other Scripting Commands
  88.  
  89. @SET <variable> <value>
  90.     Allows you to change a variable. You must define variables before you use them.
  91.  
  92. @ADDONE <variable>
  93. @SUBONE <variable>
  94.     These commands add/subtract one from the specified (integer) variable.
  95.  
  96. @DELAY <numTicks>
  97.     Pauses execution for numTicks ticks. (A tick is 1/60 of a second.)
  98.  
  99. @WRITELN <theMessage>
  100.     Copies the message to the console.
  101.  
  102. @BEEP
  103.     Makes your computer beep.
  104.  
  105. @GETARGS <numArgs>
  106.     Causes ShadowBot to process the command's arguments. Returns the number of arguments found (equal to or less than numArgs) in the variable $NUMARGS.
  107.  
  108.     Example:
  109.     !command arg1 arg2 arg3 arg4
  110.  
  111.     @GETARGS 3
  112.         $ARG1 = 'arg1'
  113.         $ARG2 = 'arg2'
  114.         $ARG3 = 'arg3 arg4'
  115.         $NUMARGS = 3
  116.  
  117.     @GETARGS 5
  118.         $ARG1 = 'arg1'
  119.         $ARG2 = 'arg2'
  120.         $ARG3 = 'arg3'
  121.         $ARG4 = 'arg4'
  122.         $NUMARGS = 4
  123.  
  124. The Bot commands SAYQ, MSGQ, and NOTICEQ may be of special interest to plugin writers. They function like SAY, MSG, and NOTICE, but don't display text in the console or channel windows in ShadowBot.
  125.  
  126. NOTE: Lines have a 255 character limit; this includes any variables that are expanded.